package com.ks.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;

public class RandomUtils {

    /**
     * 产生0～max的随机整数?包括0 不包括max
     *
     * @param max 随机数的上限
     * @return
     */
    public static int getRandom(int max) {
        return new Random().nextInt(max);
    }

    /**
     * 从range个数中      产生 num个不重复的随机整数
     *
     * @param num
     * @param range
     * @return
     */
    public static int[] getDifferentRandom(int num, int range) {

        Set<String> set = new HashSet<>();
        while (set.size() != num) {
            Random random = new Random();
            boolean add = set.add(random.nextInt(range) + "");
        }
        String[] array = set.toArray(new String[set.size()]);
        int[] intArray = new int[array.length];
        for (int i = 0; i < array.length; i++) {
            intArray[i] = Integer.parseInt(array[i]);
        }
        Arrays.sort(intArray);
        return intArray;
    }

    /**
     * 产生 min～max的随机整数?包括 min 但不包括 max
     *
     * @param min
     * @param max
     * @return
     */
    public static int getRandom(int min, int max) {
        int r = getRandom(max - min);
        return r + min;
    }

    /**
     * 产生0～max的随机整数?包括0 不包括max
     *
     * @param max 随机数的上限
     * @return
     */
    public static long getRandomLong(long max) {
        long randNum = (long) (Math.random() * max);// + minId;
        return randNum;
    }

    /**
     * 产生 min～max的随机整数?包括 min 但不包括 max
     *
     * @param min
     * @param max
     * @return
     */
    public static long getRandomLong(long min, long max) {
        long r = getRandomLong(max - min);
        return r + min;
    }

    /**
     * 随机获取图片
     *
     * @param num
     * @return
     */
    public static long getSQLRandom(Long num) {
        Long newNum = getRandomLong(num);
        String numStr = newNum + "";
        if (numStr.length() < 8) {
            return newNum;
        }
        int randLen = getRandom(8, numStr.length());
        return Long.valueOf(numStr.substring(0, randLen));
    }

    public static void main(String[] args) {
        int[] set = getDifferentRandom(10, 20);
        for (Integer i : set) {
            System.out.println(i);
        }
    }
}
